import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# Генерируем случайные данные для обучения
x_train = np.random.rand(1000, 2)  # Входные значения - пары чисел
y_train = np.log(x_train[:, 0] / x_train[:, 1])  # Целевые значения - логарифм отношения чисел

# Создаем модель нейронной сети
model = Sequential()
model.add(Dense(32, input_shape=(2,), activation='relu'))  # Добавляем скрытый слой с 32 нейронами и активацией ReLU
model.add(Dense(1))  # Добавляем выходной слой с одним нейроном

# Компилируем модель
model.compile(optimizer='adam', loss='mean_squared_error')  # Используем оптимизатор Adam и среднеквадратичную ошибку

# Обучаем модель
model.fit(x_train, y_train, epochs=10, batch_size=32)  # Обучаем модель на тренировочных данных

# Генерируем случайные данные для тестирования
x_test = np.random.rand(10, 2)

# Предсказываем логарифм отношения чисел для тестовых данных
y_pred = model.predict(x_test)

print("Входные значения:")
print(x_test)
print("Предсказанный логарифм отношения чисел:")
print(y_pred.flatten())

# Выводим пояснения на экран
for i in range(len(x_test)):
    x1, x2 = x_test[i]
    true_result = np.log(x1 / x2)  # Вычисляем правильный логарифм отношения чисел
    predicted_result = y_pred[i][0]  # Получаем предсказанный логарифм отношения чисел
    explanation = f"Для чисел {x1:.3f} и {x2:.3f}: "
    explanation += f"Правильный результат: {true_result:.3f}, "
    explanation += f"Предсказанный результат: {predicted_result:.3f}"
    print(explanation)